# 250527704258269,74891071972884336452892671945839935839027130680745292701175368094445819328761543101567760612778187287503041052186054409602799660254304070752542327616415127619185118484301676127655806327719998855075907042722072624352495417865982621374198943186383488123852345021090112675763096388320624127451586578874243946255833495297552979177208715296225146999614483257176865867572412311362252398105201644557511678179053171328641678681062496129308882700731534684329411768904920421185529144505494827908706070460177001921614692189821267467546120600239688527687872217881231173729468019623441005792563703237475678063375349
import base64
import binascii
p,q = 250527704258269,74891071972884336452892671945839935839027130680745292701175368094445819328761543101567760612778187287503041052186054409602799660254304070752542327616415127619185118484301676127655806327719998855075907042722072624352495417865982621374198943186383488123852345021090112675763096388320624127451586578874243946255833495297552979177208715296225146999614483257176865867572412311362252398105201644557511678179053171328641678681062496129308882700731534684329411768904920421185529144505494827908706070460177001921614692189821267467546120600239688527687872217881231173729468019623441005792563703237475678063375349

d = 2500989530462696070479437264237439769815613208798986358248910749206176742853406594511395824636751386805541276930259360542832941809035762471752673584482154891476193051394186876981734912985975157985026323007180915365982833825191021587276140979318396814773779439102959655161084800055123768023038517763227514061775268893322946859551908566668208629419779208913783351428977917202249246359057312032892817529782474469500816887841034803531530212519606235043731289074018618387782735448369594296789089972390932182633090208863691349142319199245316803751876311678543706070895776094590750745139173634509085499863134564549539403265
n = 18762288330807505336471569952368628968038915032364773203018829070696227411217877868952724842039756288121734420378039301563905037169196320417706839549744629044465352679919380329435329653365900312498712121432190200717072138327379844913608851715404086200984072727408758802012147296753317519612628629535373054730645471938738605688629618951071483635716677866010394704066696480858977560809007683074249820225609075518509112704549293147063971302640066331096645041521401155565628466857211261242132897152403975836705170916276159246187173035660820037820087171748591660487636434105623595720788169970861783452500198572918584010881

def exeuclid(a,b):
    if b == 0:
        return 1,0,a
    else:
        x,y,q = exeuclid(b,a%b)
        x,y = y,(x-a/b*y)
        return x,y,q

def getprikey(e,n):
    p,q = getpq(n)
    d,x,y = exeuclid(e,(p-1)*(q-1))
    if d < 0:
        d = (p-1)*(q-1)+d
    return d,n



if __name__ == '__main__':
    fr = open('../sctf/rsa1/level0/level1.passwd.enc','r')
    ciphertexts = fr.readlines()
    fr.close()
    rettext = ""
    for c in ciphertexts:
        rettext += c.strip()
    plaintext = base64.b64decode(rettext)

    plaintext = plaintext.encode('hex')
    retStr = pow(plaintext,d,n)
    print (len(plaintext))
